填写指南
题目名
题目的名字,尽量多样化,避免 ez,baby 等名词简单堆砌。

题目附件
题目的附件,会在选手解题时提供给选手,请以 zip 格式压缩后上传。

容器文件
对于 Reverse 题来说,一般无须容器文件。
题目标签
在选择题目标签之前,请先按照“题目类型”处所示步骤,选择正确的题目分类。
请点击“+ New Tag”按钮来新增标签。

选择与题目对应的知识点标签。

添加完一个标签后,可以继续点击“+ New Tag”按钮来添加下一个标签。


注意:可以使用AI来选择标签!在下面将解题思路上传之后,可以点击AI标签按钮来让AI自动选择题目匹配的知识点标签。
有无提示
如有需要给到选手的提示,请点开这个开关,然后在提示栏输入要给出的提示,语言要精简。

题目难度
选择匹配的题目难度。
对于REVERSE题目来说,难度定义如下:
- 入门:涉及到 1 个知识点,选手平均解题所需时间约20分钟左右。
- 简单:涉及到 1~2 个知识点,选手平均解题所需时间约40分钟左右。
- 中等:涉及到 2~3 个知识点,选手平均解题所需时间约60分钟左右。
- 困难:涉及到 3~4 个知识点,选手平均解题所需时间约90分钟左右。
依据题目难度选择对应的难度即可,最终评价难度以审核人审核为准。

Flag类型
对于 REVERSE题目,选择 Flag类型为静态FLag,然后填写静态 Flag 的值即可。
只需要填写DASCTF{}括号内内容!!!
只需要填写DASCTF{}括号内内容!!!
只需要填写DASCTF{}括号内内容!!!

题目类型
选择“REVERSE(逆向工程)”即可。

题目步骤
点击“+ New Step”按钮即可添加新的步骤。
多次点击“+ New Step”按钮可以多次添加步骤。

请在此处以简洁精炼的语言说明题目的解题步骤,不可直接拷贝解题思路里的文段!
题目描述
这里的文字是选手解题的时候展示给选手的描述性文字,便于选手了解题目大致的考察内容。

备注
这里的文字是展示给审核员查看的文字,出题人可以在此处给审核人一些说明。最终选手解题的时候不会看到这里的文字。

题目源码
需要在此处把环境中所有的程序源码投递一份。

Exploit
所有Reverse题目都需要提交EXP脚本!
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
# 示例密文(在实际题目中,这个密文可能是从某个文件或其他来源获取的)
ciphertext = "ENCRYPTED_FLAG_HERE"
# 解密函数(需要根据具体逆向题目的算法实现)
def decrypt(ciphertext):
# 这里提供一个简单的示例解密算法
# 假设密文是通过简单的 Caesar Cipher 加密的,偏移量为3
plaintext = ""
for char in ciphertext:
if char.isalpha():
shift = 3
if char.islower():
plaintext += chr((ord(char) - shift - 97) % 26 + 97)
else:
plaintext += chr((ord(char) - shift - 65) % 26 + 65)
else:
plaintext += char
return plaintext
# exp 函数
def exp():
# 解密密文
flag = decrypt(ciphertext)
return flag
# 主逻辑
if __name__ == '__main__':
flag = exp()
# print(flag)
# 比较得出的 flag 是否是想要的 flag
assert flag == FLAG
print("Pass!")
Checker
此处不需要,忽略即可。
解题视频
题目的解题视频文件,要求必须是 mp4 格式。
要求:
- 视频尺寸必须为屏幕尺寸,帧率30+,码率2000 kbps+。
- 视频有配音解说,解说要覆盖所做的每个步骤。没有声音的视频会被直接打回!
推荐OBS https://obsproject.com/ 来进行录制,配置如下。


WriteUp
题目的解题思路文件,请务必按照下面的格式使用 Markdown 详细填写。
要求:
- 图片需要使用指定图床 https://img.dasctf.com/ [DASCTF 图床系统 PicGo 快速配置指南](/平台使用/4. 图床/2. DASCTF 图床系统 PicGo 快速配置指南.html) 上传。
- 必须涵盖解题所需的每一个步骤,多个步骤不能合成一个步骤来写。
- 每一个步骤必须使用一张截图/一个公式/一段代码来配合解释,过于简略的解题思路会被直接打回!
- 模板里所有信息都要自己修改好。包含题目信息、FLAG、知识点、解题步骤。
模板:
# 逆向题目解题思路
## 题目信息
| 题目名 | 类型 | 难度 |
| ------ | ---- | ---- |
| reverse1 | 逆向 | 入门 |
## FLAG
* DASCTF{123456}
## 知识点
1. 静态分析
2. 动态调试
3. 常见加密/解密算法
## 解题步骤
这里详细写 WriteUp 即可,这很重要,不详细写可能会被打回。
1. **步骤1:获取目标程序**
下载并查看题目附件,通常是一个可执行文件或脚本。

2. **步骤2:静态分析**
使用反编译工具(如IDA Pro、Ghidra)对目标程序进行静态分析,了解程序的基本结构和逻辑。寻找可能的加密/解密函数。
```python
# 示例代码片段(如果有)
def example_function():
pass步骤3:定位密文
在程序中找到存储或生成密文的位置。通常密文会以字符串或数组的形式存在。
步骤4:分析解密算法
通过静态分析或动态调试(如使用gdb、OllyDbg)理解程序中的解密算法。记录下解密算法的步骤和关键点。
python# 示例解密算法 def decrypt(ciphertext): plaintext = "" for char in ciphertext: plaintext += chr(ord(char) - 3) return plaintext步骤5:编写解密脚本
根据分析结果编写解密脚本,解密密文以获得FLAG。
python# 解密脚本示例 ciphertext = "ENCRYPTED_FLAG_HERE" flag = decrypt(ciphertext) print(flag)步骤6:验证FLAG
将解密得到的FLAG与题目要求的格式进行比对,确保正确。
步骤7:提交FLAG
将正确的FLAG提交至题目平台,验证解题成功。
参考资料